package com.rabbiter.pet.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
//这CorsConfig 的配置类，用于配置应用程序的跨域资源共享（CORS）策略。
public class CorsConfig {
    // 当前跨域请求最大有效时长。这里默认1天
    private static final long MAX_AGE = 24 * 60 * 60;
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 1 设置访问源地址  允许所有来源访问资源
        corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头  允许所有请求头。
        corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法  允许所有请求方法（GET、POST、PUT、DELETE 等）。
//setMaxAge(MAX_AGE): 设置跨域请求最大有效时长。
        corsConfiguration.setMaxAge(MAX_AGE);//设置跨域请求最大有效时长。
        source.registerCorsConfiguration("/**", corsConfiguration); // 4 对接口配置跨域设置
        return new CorsFilter(source);//创建并返回一个使用配置源的 CorsFilter。
    }
}
